#By WhitemuTeam
#注意：该程序运行并“优化”后不可逆
import os
import win32api
import win32con
import PySimpleGUI as sg
import webbrowser
from PySimpleGUI.PySimpleGUI import Button, Checkbox, Input

sg.change_look_and_feel("Default1")
layout = [[sg.Text('请以管理员运行，先优化再开游戏', font = ("宋体", 15)), sg.Button('Star支持', key='star', font = ('斜体', 13))],
    [sg.Checkbox('清理剪切版'),  #1
    sg.Checkbox('内存整理，小内存专用')], #2
    [sg.Checkbox('关闭无用进程'), #3
    sg.Checkbox('"游戏模式"（萌新勿开）')], #4
    [sg.Checkbox('启用全部CPU内核'), #5
     sg.Checkbox('生成电源卓越模式')], #6
    [sg.Radio('关闭win部分无用服务', 7)], #7
    [sg.Text('本软件不超频，查看源码来看看所谓优化的真相')],
    [sg.Text('输入游戏目录，方便游戏模式时打开游戏：')],
    [sg.Input(), sg.Button('打开游戏', key='game'), sg.Button('一键优化', size = (11, 4), key='up'), sg.Button('恢复', size = (11, 4), key='down')]]

sg.popup('部分源码来源于我自己，侵删', icon=r'icon.ico')

event, value= sg.Window('沐の电脑加速器v1145.14 Github:WhitemuTeam', icon=r'icon.ico').Layout(layout).Read()

if event == 'star':
    #给仓库点个Star吧
    url = 'https://github.com/WhitemuTeam/Python-Computer-optimizer'
    webbrowser.open_new(url)

if event == 'game':
    #打开游戏，就一个游戏目录输入栏，瞧不起谁呢？
    exe = str(value[7])
    os.system(exe)
    print(value)
#清理剪切版
if event == 'up':
    if value[0] == True:
        #清理剪切板
        os.system('echo off | clip')
        print('ok')
    if value[1] == True:
        #子程序-系统一键优化？一键报废！现在我的实体机遭殃了
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\Control',0, win32con.KEY_ALL_ACCESS)#跳转目录
        win32api.RegSetValueEx(key,'WaitToKillServiceTimeout',0,win32con.REG_SZ,'500')#写值（key, '项名', ...）
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'EnablePrefetcher',0,win32con.REG_SZ,'00000001')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Control Panel\Desktop',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'AutoEndTask',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Control Panel\Desktop',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'HungAppTimeout',0,win32con.REG_SZ,'100')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Control Panel\Desktop',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'WaitToKillAppTimeout',0,win32con.REG_SZ,'500')
        key = win32api.RegOpenKey(win32con.HKEY_USERS,'.DEFAULT\Control Panel\Desktop',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'AutoEndTask',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_USERS,'.DEFAULT\Control Panel\Desktop',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'HungAppTimeout',0,win32con.REG_SZ,'100')
        key = win32api.RegOpenKey(win32con.HKEY_USERS,'.DEFAULT\Control Panel\Desktop',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'WaitToKillAppTimeout',0,win32con.REG_SZ,'500')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'Enable',0,win32con.REG_SZ,'yes')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\Control\FileSystem',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'ConfigFileAllocSize',0,win32con.REG_SZ,'500')
        key = win32api.RegOpenKey(win32con.HKEY_USERSE,'.DEFAULT\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'AlwaysUnloadDLL',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\Services\stisvc',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'Start',0,win32con.REG_SZ,'4')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'NoRemoteRecursiveEvents',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'NoSaveSettings',0,win32con.REG_SZ,'0')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Control Panel\desktop',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'MenuShowDelay',0,win32con.REG_SZ,'0')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'NoNetCrawling',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace',0, win32con.KEY_ALL_ACCESS)
        win32api.RegCreateKey(key,'{2227A280-3AEA-1069-A2DE-08002B30309D}')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{2227A280-3AEA-1069-A2DE-08002B30309D}',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValue(key,'',win32con.REG_SZ,'Printers')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValue(key,'',win32con.REG_SZ,'Printers')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'System\CurrentControlSet\Control\FileSystem\CDFS',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'CacheSize',0,win32con.REG_SZ,'2476')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'System\CurrentControlSet\Control\FileSystem\CDFS',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'Prefetch',0,win32con.REG_SZ,'0')
        win32api.RegSetValueEx(key,'PrefetchTail',0,win32con.REG_SZ,'128')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'VideoInitTime',0,win32con.REG_SZ,'1071')
        win32api.RegSetValueEx(key,'EnablePrefetcher',0,win32con.REG_SZ,'1')
        win32api.RegSetValueEx(key,'AppLaunchMaxNumPages',0,win32con.REG_SZ,'4000')
        win32api.RegSetValueEx(key,'AppLaunchMaxNumSections',0,win32con.REG_SZ,'170')
        win32api.RegSetValueEx(key,'BootMaxNumPages',0,win32con.REG_SZ,'128000')
        win32api.RegSetValueEx(key,'BootMaxNumSections',0,win32con.REG_SZ,'4080')
        win32api.RegSetValueEx(key,'MaxNumActiveTraces',0,win32con.REG_SZ,'8')
        win32api.RegSetValueEx(key,'MaxNumSavedTraces',0,win32con.REG_SZ,'8')
        win32api.RegSetValueEx(key,'RootDirPath',0,win32con.REG_SZ,'Prefetch')
        win32api.RegSetValueEx(key,'HostingAppList',0,win32con.REG_SZ,'DLLHOST.EXE,MMC.EXE,RUNDLL32.EXE')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\Control\FileSystem',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'Win31FileSystem',0,win32con.REG_SZ,'0')
        win32api.RegSetValueEx(key,'NtfsDisable8dot3NameCreation',0,win32con.REG_SZ,'0')
        win32api.RegSetValueEx(key,'Win95TruncatedExtensions',0,win32con.REG_SZ,'1')
        win32api.RegSetValueEx(key,'NtfsAllowExtendedCharacterIn8dot3Name',0,win32con.REG_SZ,'1')
        win32api.RegSetValueEx(key,'ConfigFileAllocSize',0,win32con.REG_SZ,'500')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Microsoft\Windows\CurrentVersion\Explorer\CabinetState',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'Use Search Asst',0,win32con.REG_SZ,'no')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'DisableThumbnailCache',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Policies\Microsoft\Windows\DriverSearching',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'DontSearchWindowsUpdate',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\CleanupWiz',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'NoRun',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Microsoft\Office\11.0\Common',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'DWNeverUpload',0,win32con.REG_SZ,'1')
        win32api.RegSetValueEx(key,'DWNoExternalURL',0,win32con.REG_SZ,'1')
        win32api.RegSetValueEx(key,'DWNoFileCollection',0,win32con.REG_SZ,'1')
        win32api.RegSetValueEx(key,'DWNoSecondLevelCollection',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\MediaPlayer\PlayerUpgrade',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'AskMeAgain',0,win32con.REG_SZ,'no')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Policies\Microsoft\WindowsMediaPlayer',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'DisableAutoUpdate',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SYSTEM\CurrentControlSet\Services\lanmanserver\parameters',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'AutoShareServer',0,win32con.REG_SZ,'0')
        win32api.RegSetValueEx(key,'AutoShareWks',0,win32con.REG_SZ,'0')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\PCHealth\ErrorReporting',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'AllOrNone',0,win32con.REG_SZ,'3')
        win32api.RegSetValueEx(key,'IncludeKernelFaults',0,win32con.REG_SZ,'0')
        win32api.RegSetValueEx(key,'IncludeMicrosoftApps',0,win32con.REG_SZ,'0')
        win32api.RegSetValueEx(key,'IncludeWindowsApps',0,win32con.REG_SZ,'0')
        win32api.RegSetValueEx(key,'DoReport',0,win32con.REG_SZ,'0')
        key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'NoDriveTypeAutoRun',0,win32con.REG_SZ,'255')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SYSTEM\ControlSet002\Control\Windows',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'NoPopUpsOnBoot',0,win32con.REG_SZ,'1')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'legalnoticecaption',0,win32con.REG_SZ,'')
        win32api.RegSetValueEx(key,'legalnoticetext',0,win32con.REG_SZ,'')
        key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon',0, win32con.KEY_ALL_ACCESS)
        win32api.RegSetValueEx(key,'AutoAdminLogon',0,win32con.REG_SZ,'0')
        #自动释放内存（未实现：见issus #2，也没必要实现）
    if value[2] == True:
        #关闭寥寥无几的程序
        os.system('taskkill /F /IM tphelper.exe')
        os.system('taskkill /F /IM nvcontainer.exe')
        os.system('taskkill /F /IM NVIDIA Share.exe')
        os.system('taskkill /F /IM QQPCRealTimeSpeedup.exe')
        os.system('taskkill /F /IM RuntimeBroker.exe')
        os.system('taskkill /F /IM "NVIDIA Web Helper.exe"')
    if value[3] == True:
        #纯游戏模式，关闭资源管理器
        os.system('taskkill /f /im explorer.exe')
    if value[4] == True:
        #启用全部CPU内核（原易程序中启用后无后续操作）
        print('Never goona give you up') #我自己补的，用来说明你被骗了
    if value[5] == True:
        #卓越性能？老老实实用你的高性能！
        os.system('powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61')
    if value[6] == True:
        #关闭无用服务，导致系统不稳定
        os.system('Net Stop FontCache')
        os.system('Net Stop DPS')
        os.system('Net Stop WbioSrvc')
        os.system('Net Stop fdPHost')
if event == "down":
    #恢复？我看是恢复服务！那我的注册表该怎么办？
    os.system('Net Start FontCache')
    os.system('Net Start DPS')
    os.system('Net Start WbioSrvc')
    os.system(' Net Start fdPHost')
    os.system('%SystemRoot%\explorer.exe') #恢复游戏模式